﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Linq;
using System.Data.Linq.Mapping;
using System.ComponentModel;

namespace VemTransporte.Models.Basica
{
    [Table(Name="Usuario")] 
    public class Usuario
    {
        #region Atributos
        private int id = 0;
        private string nome;
        private DateTime nascimento;
        private string sexo;
        private string telefone;
        private string email;
        private string senha;
        private System.Nullable<int> _IdEndereco;
        private EntityRef<Endereco> _endereco;
        #endregion

        #region Propriedades
        [Column(Name="PK_IdUsuario", Storage="id", IsDbGenerated=true, IsPrimaryKey=true, AutoSync=AutoSync.OnInsert)]
        public int Id
        {
            get { return id; }
        }

        [Column(Name="USU_Nome")]
        public string Nome
        {
            get { return nome; }
            set { nome = value; }
        }

        [Column(Name="USU_Telefone")]
        public string Telefone
        {
            get { return telefone; }
            set { telefone = value; }
        }

        [Column(Name = "USU_Nascimento")]
        public DateTime Nascimento
        {
            get { return nascimento; }
            set { nascimento = value; }
        }

        [Column(Name = "USU_Sexo")]
        public string Sexo
        {
            get { return sexo; }
            set { sexo = value; }
        }

        /// <summary>
        /// Email será o login do usuário
        /// </summary>
        [Column(Name = "USU_Email")]
        public string Email
        {
            get { return email; }
            set { email = value; }
        }

        [Column(Name = "USU_Senha")]
        public string Senha
        {
            get { return senha; }
            set { senha = value; }
        }

        [Column(Name="FK_IdEndereco", DbType="int", CanBeNull=true)]
        public System.Nullable<int> IdEndereco
        {
            get { return _IdEndereco; }
            set { _IdEndereco = value; }
        }

        [Association(ThisKey="IdEndereco", Storage="_endereco", IsForeignKey=true)]
        public Endereco Endereco
        {
            get { return _endereco.Entity; }
            set { _endereco.Entity = value;}
        }

        #endregion

        #region Contrutores
        public Usuario() { this._endereco = new EntityRef<Endereco>(); }
        #endregion

        #region Functions
        #endregion
    }
}